package it.polimi.Mir_1.paw;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Locale;

/**
 *
 * @author Alb0
 */
public class RegistrazioneBean {

    private String username;
    private String password;
    private String nome;
    private String cognome;
    private String datanascita;
    private String sesso;
    private String continente;
    private String news;
    private String note;
    /* internal fields */
    private ErrMsg errs;
    
    public RegistrazioneBean() {
        this.username = "";
        this.password = "";
        this.nome = "";
        this.cognome = "";
        this.datanascita = "";
        this.sesso = "";
        this.continente = "EUR";
        this.news = "";
        this.note = "";

        this.errs = new ErrMsg();
    }

       /* bean properties */


    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public String getNome() {
        return nome;
    }

    public String getCognome() {
        return cognome;
    }

    public String getDatanascita() {
        return datanascita;
    }

    public String getSesso() {
        return sesso;
    }

    public String getContinente() {
        return continente;
    }

    public String getNews() {
        return news;
    }

    public String getNote() {
        return note;
    }
 
   public void setUsername(String username) {
        this.username = username;
    }
    


    public void setPassword(String password) {
        this.password = password;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    public void setDatanascita(String datanascita) {
        this.datanascita = datanascita;
    }

    public void setSesso(String sesso) {
        this.sesso = sesso;
    }

    public void setContinente(String continente) {
        this.continente = continente;
    }

    public void setNews(String news) {
        this.news = news;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public void setErrs(ErrMsg errs) {
        this.errs = errs;
    }

 

    /**
     * Controlla se i dati presenti nel bean rappresentano
     * dei dati completi e validi per registrare il nuovo utente
     * 
     * @return true se è valido, false se ci sono dati mancanti o errati
     */
    public boolean isValid() {
        boolean valid = true;
        errs.clear();

        if (username == null || username.isEmpty()) {
         errs.addMsg("l'Username è obbligatorio");
        }
        if (password == null || password.isEmpty()) {
        errs.addMsg("la Password è obbligatorio");
        }
        if (nome == null || nome.isEmpty()) {
            errs.addMsg("Il nome è obbligatorio");
        }
        if (cognome == null || cognome.isEmpty()) {
            errs.addMsg("Il cognome è obbligatorio");
        }
        if (datanascita == null || datanascita.isEmpty()) {
            errs.addMsg("La data di nascita è obbligatoria");
        } else {
            try {
                Date d = DateFormat.getDateInstance(DateFormat.SHORT, Locale.ITALY).parse(datanascita);
            } catch (ParseException e) {
                errs.addMsg("La data non è nel formato corretto: " + e.getLocalizedMessage());
            }
        }

        if (sesso == null || sesso.isEmpty()) {
            errs.addMsg("E' necessario specificare il sesso");
        } else if (!sesso.equals("M") && !sesso.equals("F")) {
            errs.addMsg("ERRORE INTERNO: il sesso deve essere M o F, invece è '" + sesso + "'");
        }

        if (continente == null || continente.isEmpty()) {
            errs.addMsg("ERRORE INTERNO: il continente deve essere specificato");
        }

        try {
            Continenti cont = Continenti.valueOf(continente);
        } catch (IllegalArgumentException e) {
            errs.addMsg("ERRORE INTERNO: il continente '" + continente + "' non è supportato");
        }
        
        return !errs.isErr();
    }

    public ErrMsg getErrs() {
        return errs;
    }
    
}
